/*
 * RiverFrame.java
 * Team qq 2011
 */
package com.google.code.timetrail.gui;

import javax.swing.JPanel;

import javax.swing.JLabel;

import java.awt.CardLayout;
import java.awt.Component;
import javax.swing.JRadioButton;

import com.google.code.timetrail.backend.Control;
import com.google.code.timetrail.backend.Event;
import com.google.code.timetrail.presenter.EventFrameBackend;
import com.google.code.timetrail.presenter.RiverFrameBackend;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class RiverFrame extends JPanel {
    
    /**
     * The serialized version for the class
     */
    private static final long serialVersionUID = -7962086205829620663L;

    private RiverFrameBackend riverFrameBackend;
    
    private JLabel titleText;
    
    private JLabel optionsText;
    
    private JRadioButton ferryRadioButton;
    
    private JRadioButton caulkRadioButton;
    
    private JRadioButton fordRadioButton;
    
    private final ButtonGroup optionsGroup = new ButtonGroup();
    
    private JButton confirmButton;
    
    private final Control gameControl;
    
    private JPanel myCD;
    
    public RiverFrame(Control gC, JPanel cd) {
        this.gameControl = gC;
        this.myCD = cd;
        riverFrameBackend = new RiverFrameBackend(gC);
        setLayout(null);
        
        titleText = new JLabel(riverFrameBackend.riverStatus());
        titleText.setAlignmentX(Component.CENTER_ALIGNMENT);
        titleText.setBounds(74, 42, 366, 34);
        add(titleText);
        
        optionsText = new JLabel(riverFrameBackend.optionsText());
        optionsText.setBounds(74, 79, 340, 34);
        add(optionsText);
        
        ferryRadioButton = new JRadioButton(riverFrameBackend.ferryText());
        //if(riverFrameBackend.canTakeFerry()){
                optionsGroup.add(ferryRadioButton);
                ferryRadioButton.setBounds(138, 109, 302, 44);
                add(ferryRadioButton);
        //}
        
        caulkRadioButton = new JRadioButton(riverFrameBackend.caulkText());
        caulkRadioButton.setSelected(true);
        optionsGroup.add(caulkRadioButton);
        caulkRadioButton.setBounds(138, 147, 302, 39);
        add(caulkRadioButton);
        
        fordRadioButton = new JRadioButton(riverFrameBackend.fordText());
        optionsGroup.add(fordRadioButton);
        fordRadioButton.setBounds(138, 187, 302, 39);
        add(fordRadioButton);
        
        confirmButton = new JButton(riverFrameBackend.confirmText());
        confirmButton.setEnabled(true);
        confirmButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent action) {
                if(ferryRadioButton.isSelected()) {
                    gameControl.setNextEvent(new Event(riverFrameBackend.getRiver().takeFerry(), gameControl));
                }
                else if(caulkRadioButton.isSelected()){
                    gameControl.setNextEvent(new Event(riverFrameBackend.getRiver().caulk(), gameControl));
                }
                else if(fordRadioButton.isSelected()){
                    gameControl.setNextEvent(new Event(riverFrameBackend.getRiver().ford(), gameControl));
                }
                else{
                    gameControl.setNextEvent(new Event(riverFrameBackend.errorText(), gameControl));
                }
                
                
                EventFrameBackend eventFrameBackend = new EventFrameBackend(gameControl.getNextEvent());
                myCD.add(new EventFrame(gameControl, eventFrameBackend, myCD), "newEvent");
                gameControl.setNextEvent(new Event());
                CardLayout cd = (CardLayout) myCD.getLayout();
                cd.last(myCD);
            }
        });
        confirmButton.setBounds(138, 252, 89, 23);
        add(confirmButton);
    }
}
